package cn.tworice.admin.utils;

import cn.tworice.admin.vo.Token;
import cn.tworice.common.entity.faSongWx;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import okhttp3.*;


import java.io.File;
import java.io.IOException;
import java.util.*;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class UploadWechatFiles {

    public  static String uploadimg(Token token) throws IOException {
        OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build();
        final File file = new File("/Users/chenwangxin/Desktop/Java项目研究代码/fuye/fy/图片0.png");

        RequestBody fileBody = RequestBody.create(file,okhttp3.MediaType.parse(MediaType.APPLICATION_OCTET_STREAM_VALUE));
        MultipartBody body = new MultipartBody.Builder()
                .setType(Objects.requireNonNull(okhttp3.MediaType.parse("multipart/form-data")))
                .addFormDataPart("media",file.getName(),fileBody)
                .build();
        Request request = new Request.Builder()
                .post(body)
                .url("https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=" + token.getAccessToken() + "&type=image").build();
        final String string = Objects.requireNonNull(HTTP_CLIENT.newCall(request).execute().body()).string();
        log.info(string);
        return string;
    }

    /**
     * 新增草稿
     * @return
     */
    public static String addDraft(String title,String author,String content,Token token,String m) throws Exception {
        Object mediaId;
        String access_token = "";
        String strResult = "";
        try {
            JSONObject EventTraceInput = new JSONObject();
            access_token = token.getAccessToken();
            String url = ConstantUtil.sendtemplateUrl.replace("ACCESS_TOKEN", access_token);
            JSONArray EventArray = new JSONArray();
            JSONObject jsonobject = new JSONObject();
            String titleNew = title.replaceAll("\\*", "");
            jsonobject.put("title", titleNew);
            jsonobject.put("author", author);
            jsonobject.put("content", content);
            jsonobject.put("thumb_media_id", m);
            jsonobject.put("need_open_comment", 0);
            jsonobject.put("only_fans_can_comment", 0);
            EventArray.add(jsonobject);
            EventTraceInput.put("articles", EventArray);
            log.info("存入草稿箱的参数为"+EventTraceInput.toJSONString());
            strResult = RestTemplateOfCustom.sendPost(url,"",EventTraceInput.toJSONString() );
            Map maps = (Map) JSON.parse(strResult);
            mediaId = maps.get("media_id");
        }catch (Exception e){
            log.error("调用微信公众号接口出错,access_token为：【{}】,调用草稿箱接口返回值为：【{}】", access_token,strResult);
            throw new Exception(e.getMessage());
        }
        return mediaId.toString();
    }

    /**
     * 发布
     * @return
     */
    public static String publishWx(String mediaId,Token token) throws Exception {
        String info="";
        String access_token="";
        try{
            access_token = token.getAccessToken();
            String url = ConstantUtil.sendSucaiUrl.replace("ACCESS_TOKEN",access_token);
            JSONObject jsonObject = new JSONObject();
            //素材的类型，图片（image）、视频（video）、语音 （voice）、图文（news）
            jsonObject.put("media_id", mediaId);
            //发起POST请求
            log.info("真正发布的参数为"+jsonObject.toJSONString());
            info = RestTemplateOfCustom.sendPost(url,"",jsonObject.toJSONString());
        }catch (Exception e){
            log.error("调用微信公众号接口出错,access_token为：【{}】,调用发布文章接口返回值为：【{}】", access_token,info);
            throw new Exception(e.getMessage());
        }
        return info;
    }

    /**
     * 将提供的文本分割为题目和文章内容。
     *
     * @param text 包含题目和文章内容的完整文本字符串。
     * @return 一个包含题目和文章内容的字符串数组。
     */
    public static String[] splitTitleAndContent(String text) {
        // 使用正则表达式匹配题目，题目位于两个星号**之间
        String regex = "(\\*\\*.*?\\*\\*)";

        // 使用Pattern和Matcher来查找题目
        java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(regex);
        java.util.regex.Matcher matcher = pattern.matcher(text);

        // 如果找到题目，则分割文本
        if (matcher.find()) {
            String title = matcher.group(1); // 题目
            String content = text.substring(matcher.end()); // 文章内容，从题目之后的部分开始
            return new String[] { title, content };
        } else {
            // 如果没有找到题目，返回null
            return new String[] { null, text };
        }
    }
}
